package com.whoiszxl.cqrs.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * 阿里云平台参数
 * 官方文档地址：<a href="https://next.api.aliyun.com/document/Ecs/2014-05-26/CreateInstance">...</a>
 * @author whoiszxl
 */
@Data
@Schema(description = "阿里云平台参数")
public class AliyunPlatformParams {

    @Schema(description = "实例所属的地域ID", example = "cn-hangzhou")
    private String regionId;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String instanceType;

    @Schema(description = "实例的付费方式。取值范围：[PrePaid, PostPaid]", example = "PrePaid")
    private String instanceChargeType;

    @Schema(description = "镜像文件ID，启动实例时选择的镜像资源", example = "ubuntu_18_04_64_20G_alibase_20190624.vhd")
    private String imageId;

    @Schema(description = "指定新创建实例所属于的安全组ID", example = "sg-bp15ed6xe1yxeycg****")
    private String securityGroupId;

    @Schema(description = "购买资源的时长，单位由PeriodUnit指定", example = "1")
    private Integer period;

    @Schema(description = "购买资源的时长。取值范围: [Week, Month]", example = "Month")
    private String periodUnit;

    @Schema(description = "实例所属的可用区ID", example = "cn-hangzhou-g")
    private String zoneId;

    @Schema(description = "网络计费类型。取值范围[PayByBandwidth, PayByTraffic]", example = "PayByTraffic")
    private String internetChargeType;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String vSwitchId;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private int internetMaxBandwidthOut;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private boolean uniqueSuffix;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String ioOptimized;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String spotStrategy;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String securityEnhancementStrategy;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String systemDiskSize;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String systemDiskCategory;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private Float spotPriceLimit;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String instanceName;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private Integer instanceQuantity;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String hostName;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private String password;

    @Schema(description = "实例的资源规格", example = "ecs.g6.large")
    private Integer time;

}
